/**
 * 
 */
package org.softTank.BpelTranslator.Impl;

import java.util.ArrayList;
import java.util.List;

import org.softTank.BcpModel.BcpPartnerLink;
import org.softTank.BcpModel.BcpVariable;
import org.softTank.BcpModel.partnerLinkType.Role;
import org.softTank.BpelModel.TImport;
import org.softTank.BpelTranslator.ImportParser;

/**
 * @author Yuzone
 * 
 */
public class ImportParserImpl implements ImportParser {

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.softTank.BpelTranslator.ImportParser#saveOrUpdateImportList(cn.softTank
	 * .BcpModel.BcpPartnerLink, java.util.List)
	 */
	@Override
	public void saveOrUpdateImportList(BcpPartnerLink value,
			List<TImport> imports) {
		saveOrUpdateImportList(value.getPartnerLinkType().getTnsLocation(),
				value.getPartnerLinkType().getTargetNamespace(), imports);
		Role role = value.getPartnerLinkType().getRoleA();
		if (role != null) {
			saveOrUpdateImportList(role.getPortType().getTnsLocation(), role
					.getPortType().getTargetNamespace(), imports);
		}
		role = value.getPartnerLinkType().getRoleB();
		if (role != null) {
			saveOrUpdateImportList(role.getPortType().getTnsLocation(), role
					.getPortType().getTargetNamespace(), imports);
		}
	}

	private void saveOrUpdateImportList(String location, String tns,
			List<TImport> imports) {
		if (!isExist(location, imports)) {
			TImport im = new TImport();
			im.setImportType("http://schemas.xmlsoap.org/wsdl/");
			im.setLocation(location);
			im.setNamespace(tns);
			if (imports == null) {
				imports = new ArrayList<TImport>();
			}
			imports.add(im);
		}
	}

	private boolean isExist(String value, List<TImport> imports) {
		if (imports == null)
			return false;
		if (value == null || value.equals(""))
			return true;
		for (TImport i : imports) {
			if (i.getLocation().equalsIgnoreCase(value))
				return true;
		}
		return false;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.softTank.BpelTranslator.ImportParser#saveOrUpdateImportList(cn.softTank
	 * .BcpModel.BcpVariable, java.util.List)
	 */
	@Override
	public void saveOrUpdateImportList(BcpVariable value, List<TImport> imports) {
		if (value.getMessageType() != null) {
			saveOrUpdateImportList(value.getMessageType().getTnsLocation(),
					value.getMessageType().getTargetNamespace(), imports);
		}
	}

}
